package _5_proxy.jdkproxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class EnhanceHandler implements InvocationHandler {
    // JDK动态代理需要: 实例化这个 被代理类
    private ITarget target;

    EnhanceHandler(ITarget target) {
        this.target = target;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("向观众问好");
        // 执行目标对象方法, ************* 注意 ************
        // 这里传入了 被代理类的实例对象, 来达到执行被代理类方法的效果
        System.out.println("代理类信息: " + proxy.getClass());
        Object returnValue = method.invoke(target, args);
        System.out.println("谢谢大家");
        return returnValue;
    }
}
